]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
workspace: Adjust for close button side in chromeWidth
authorJonas Dreßler <verdre@v0yd.nl>
Mon, 8 Jun 2020 15:52:57 +0000 (17:52 +0200)
committerJonas Dreßler <verdre@v0yd.nl>
Thu, 11 Jun 2020 18:50:08 +0000 (20:50 +0200)
When the close button is shown on the left side of the WindowClone, we
also need to return its width in chromeWidth() on the left side instead
of the right side, so do that.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1298

js/ui/workspace.js

index 97b5f8cc9a6d12b9fe397335dd608ee7b3552951..a64ed0b99db043a9d0b82dde4b75ed1dca52caff 100644 (file)
@@ -308,8 +308,9 @@ var WindowClone = GObject.registerClass({
         });
 
         const layout = Meta.prefs_get_button_layout();
-        const side = layout.left_buttons.includes(Meta.ButtonFunction.CLOSE)
-            ? St.Side.LEFT : St.Side.RIGHT;
+        this._closeButtonSide =
+            layout.left_buttons.includes(Meta.ButtonFunction.CLOSE)
+                ? St.Side.LEFT : St.Side.RIGHT;
 
         this._closeButton = new St.Button({
             visible: false,
@@ -324,7 +325,7 @@ var WindowClone = GObject.registerClass({
             source: this._border,
             align_axis: Clutter.AlignAxis.X_AXIS,
             pivot_point: new Graphene.Point({ x: 0.5, y: -1 }),
-            factor: side === St.Side.LEFT ? 0 : 1,
+            factor: this._closeButtonSide === St.Side.LEFT ? 0 : 1,
         }));
         this._closeButton.add_constraint(new Clutter.AlignConstraint({
             source: this._border,
@@ -395,16 +396,26 @@ var WindowClone = GObject.registerClass({
         const [, closeButtonHeight] = this._closeButton.get_preferred_height(-1);
         const [, titleHeight] = this._title.get_preferred_height(-1);
 
-        return [this._borderSize + closeButtonHeight / 2,
-                Math.max(this._borderSize, (titleHeight / 2) + (this._borderSize / 2))];
+        const topOversize = this._borderSize + closeButtonHeight / 2;
+        const bottomOversize = Math.max(
+            this._borderSize,
+            (titleHeight / 2) + (this._borderSize / 2));
+
+        return [topOversize, bottomOversize];
     }
 
     chromeWidths() {
         this._border.ensure_style();
         const [, closeButtonWidth] = this._closeButton.get_preferred_width(-1);
 
-        return [this._borderSize,
-                this._borderSize + closeButtonWidth / 2];
+        const leftOversize = this._closeButtonSide === St.Side.LEFT
+            ? this._borderSize + closeButtonWidth / 2
+            : this._borderSize;
+        const rightOversize = this._closeButtonSide === St.Side.LEFT
+            ? this._borderSize
+            : this._borderSize + closeButtonWidth / 2;
+
+        return [leftOversize, rightOversize];
     }
 
     showOverlay(animate) {